package common

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

type Result struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

// PageResult 分页响应结构
type PageResult struct {
	List     interface{} `json:"list"`     // 数据列表
	Total    int64       `json:"total"`    // 总记录数
	Page     int         `json:"page"`     // 当前页码
	PageSize int         `json:"pageSize"` // 每页大小
}

// 统一成功响应
func SuccessResponse(c *gin.Context, data interface{}) {
	c.JSON(http.StatusOK, Result{
		Code:    200,
		Message: "success",
		Data:    data,
	})
}

// 统一分页成功响应
func SuccessPageResponse(c *gin.Context, list interface{}, total int64, page, pageSize int) {
	c.JSON(http.StatusOK, Result{
		Code:    200,
		Message: "success",
		Data: PageResult{
			List:     list,
			Total:    total,
			Page:     page,
			PageSize: pageSize,
		},
	})
}

// 统一错误响应
func ErrorResponse(c *gin.Context, code int, message string) {
	c.JSON(code, Result{
		Code:    code,
		Message: message,
		Data:    nil,
	})
}
